/*
 * MiRendererTree.java
 *
 * Created on 17 de febrero de 2006, 12:08 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package ig.util;

import ejb.metrica.seguridad.dao.OpcionDTO;
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JTree;
import javax.swing.UIManager;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeCellRenderer;

// Esta es la clase que va a permitir personalizar la presentaci
  // de cada una de las ramas del \u00F3bol, de forma que no solamente
  // tengamos el texto correspondiente a la carta, o palo de la
  // baraja, sino un icono mostrando su imagen
  public class MiRendererTree extends JLabel implements TreeCellRenderer {
//    private ImageIcon imgBaraja;
    private ImageIcon[] imgMetrica;
    //private String path = "./lib/images/";
    private boolean seleccionado;
    
    public MiRendererTree(String tree) {
      imgMetrica = new ImageIcon[4];
//      System.out.println("UIManager."+UIManager.getLookAndFeel().getName());
      //UIManager.Metal
      if(UIManager.getLookAndFeel().getName().trim().equals("UIManager.Metal"))
        imgMetrica[0] = new ImageIcon("tree.gif");
      else
        imgMetrica[0] = new ImageIcon("metrica.gif");

      imgMetrica[1] = new ImageIcon("folder-icon.png");
      imgMetrica[2] = new ImageIcon("pantalla.gif");
      imgMetrica[3] = new ImageIcon("wizard.gif");
      this.setToolTipText("opciones");
    }
    
    public Component getTreeCellRendererComponent( JTree arbol,  Object valor,boolean seleccionado,boolean expandido, boolean rama,int fila,boolean conFoco ) {
      // Hay que encontrar el nodo en que estamos y coger el
      // texto que contiene      
      DefaultMutableTreeNode nodo = (DefaultMutableTreeNode)valor;
      OpcionDTO texto = (OpcionDTO) nodo.getUserObject();
      this.seleccionado = seleccionado;
      setFont(new java.awt.Font("Dialog", 1, 12));
      if(texto.getId_padre()==null)
         setIcon(new javax.swing.ImageIcon(getClass().getResource("/ig/util/images/"+imgMetrica[0])));
      else if( texto.getId_padre()!=null && texto.getClasss() == null )
          setIcon(new javax.swing.ImageIcon(getClass().getResource("/ig/util/images/"+imgMetrica[1])));
      else{
          setIcon(new javax.swing.ImageIcon(getClass().getResource("/ig/util/images/"+imgMetrica[2])));
          setFont(new java.awt.Font("Dialog", java.awt.Font.PLAIN, 11));
      }
      
      setText( texto.getLabel() );
      return this ;
    }
    
    // Sobreescribimos el m\u00F3odo paint() para fijar el color de
    // fondo. Normalmente, un JLabel puede pintar su propio fondo,
    // pero, seguramente debido aparentemente a un bug, o a una
    // limitaci\u00F3 en el TreeCellRenderer, es necesario recurrir
    // al m\u00F3odo paint() para hacer esto
    public void paint( Graphics g ) {
      Color color;
      Icon currentI = getIcon();
      
      // Fijamos el colos de fondo
      color = seleccionado ? new Color(216,216,252) : Color.white;
      g.setColor( color );
      // Rellenamos el rect\u00F3gulo que ocupa el texto sobre la
      // celda del \u00F3bol
      g.fillRect( 0,0,getWidth()-1,getHeight()-1 );
      
      super.paint( g );
    }
  }